/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sgs.dao;

import br.com.sgs.entity.ModeloSolicitacao;
import java.util.Date;
import java.util.List;
import javax.persistence.Query;

/**
 *
 * @author Eric
 */
public class DAOModeloSolicitacao extends AbstractDAO implements IDAOModeloSolicitacao{
    
    public DAOModeloSolicitacao(){
        super();
    }
    
    @Override
    public ModeloSolicitacao findModeloSolicitacaoById(int idmodelosolicitacao) {
         try {

            Query q = em.createQuery("SELECT ms FROM ModeloSolicitacao ms WHERE ms.id = :idmodelosolicitacao");
            q.setParameter("idmodelosolicitacao", idmodelosolicitacao);
            return (ModeloSolicitacao) q.getSingleResult();

        } catch (Exception e) {
            System.err.println("Erro no findModeloSolicitacaoById");
            return null;
        }
    }

    @Override
    public List<ModeloSolicitacao> findModeloSolicitacao() {
                   
            Query q = em.createQuery("SELECT ms FROM ModeloSolicitacao ms");
            return q.getResultList();
    }

    @Override
    public List<ModeloSolicitacao> findModeloSolicitacaoByAll(String descricao, Date dtvalidadeini, Date dtvalidadefin, Date dtcriacaoini, Date dtcriacaofin, List<String> lsstatus) {
        
        try {

            StringBuilder sql = new StringBuilder();

            if (!descricao.equals("")) {
                sql.append("  AND UPPER(ms.descricao) LIKE '%").append(descricao.toUpperCase()).append("%'");
            }

            if( dtcriacaoini != null && dtcriacaofin != null ){
                sql.append(" AND ms.dtcriacao BETWEEN :dtcriacaoini AND :dtcriacaofin ") ;
            }
            
            if( dtvalidadeini != null && dtvalidadefin != null ){
                sql.append(" AND ms.dtvalidacao BETWEEN :dtcriacaoini AND :dtcriacaofin ") ;
            }
            
            Query q = em.createQuery("SELECT ms FROM ModeloSolicitacao ms WHERE ms.id > 0 " + sql.toString() + " ORDER BY ms.descricao ASC");

            if( dtcriacaoini != null && dtcriacaofin != null ){
                q.setParameter("dtcriacaoini", dtcriacaoini);
                q.setParameter("dtcriacaofin", dtcriacaofin);
            }
            
            if( dtvalidadeini != null && dtvalidadefin != null ){
                q.setParameter("dtvalidadeini", dtvalidadeini);
                q.setParameter("dtvalidadefin", dtvalidadefin);
            }
            
            return q.getResultList();

        } catch (Exception e) {
            System.err.println("Erro na consulta findSolicitacaoByAll");
            e.printStackTrace();
            return null;
        }
        
    }

}
